1
Passer à la production : une approche centrée sur le déploiement
EvoClass-AI002Leçon 10
00:00

Passer à la production : une approche centrée sur le déploiement

Ce module final comble l'écart entre une recherche réussie — où nous avons obtenu une haute précision dans un bloc-notes — et une exécution fiable. Le déploiement est le processus essentiel qui transforme un modèle PyTorch en un service minimal, service autonomecapable de fournir des prédictions de manière efficace aux utilisateurs finaux avec une faible latence et haute disponibilité.

1. Le changement d'approche pour la production

L'environnement exploratoire d'un bloc-notes Jupyter est étatique et fragile pour une utilisation en production. Nous devons restructurer notre code, passé d'une scripturaire exploratoire à des composants structurés et modulaires, adaptés aux requêtes simultanées, à l'optimisation des ressources et à une intégration transparente dans des systèmes plus larges.

Inférence à faible latence :Obtenir des temps de prédiction constamment inférieurs aux seuils cibles (par exemple, $50\text{ms}$), essentiel pour les applications en temps réel.
Haute disponibilité :Concevoir le service pour qu'il soit fiable, sans état, et capable de se remettre rapidement d'une panne.
Reproductibilité :Assurer que le modèle déployé et son environnement (dépendances, poids, configuration) correspondent exactement aux résultats de recherche validés.
Focus : Le service modèle
Plutôt que de déployer tout le script d'entraînement, nous déployons un wrapper de service minimal et autonome. Ce service doit uniquement gérer trois tâches : charger l'artefact du modèle optimisé, appliquer le prétraitement des entrées et exécuter le passage avant pour retourner la prédiction.
service_inférence.py
TERMINALbash — uvicorn-service
> Prêt. Cliquez sur « Simuler le flux de déploiement » pour exécuter.
>
INSPECTEUR D'ARTÉFACTS En direct

Simulez le flux pour visualiser les artefacts de production chargés.
Question 1
Quelle caractéristique d'un bloc-notes Jupyter le rend inapproprié pour un déploiement en production ?
Il utilise principalement du code Python
Il est intrinsèquement étatique et intensif en ressources
Il ne peut pas accéder directement à la GPU
Question 2
Quel est le but principal de la conversion d'un modèle PyTorch en TorchScript ou ONNX avant le déploiement ?
Optimisation pour une exécution plus rapide en C++ et une dépendance Python réduite
Pour empêcher le vol du modèle ou son ingénierie inverse
Pour traiter automatiquement le prétraitement des données d'entrée
Question 3
Lors de la conception d'une API de production, quand les poids du modèle doivent-ils être chargés ?
Une seule fois, au moment de l'initialisation du service
Au début de chaque requête de prédiction
Lorsque la première requête est reçue par le service
Défi : Définir le service minimal
Planifier les exigences structurelles d'un service à faible latence.
Vous devez déployer un modèle complexe de classification d'images ($1\text{Go}$) nécessitant un prétraitement spécialisé des images. Il doit gérer $50$ requêtes par seconde.
Étape 1
Pour garantir un haut débit et une latence moyenne faible, quelle est la modification structurelle la plus critique nécessaire pour le script Python ?
Solution :
Réorganisez la base de code en modules isolés (Prétraitement, Définition du modèle, Exécuteur d'inférence) et assurez-vous que l'ensemble du processus est empaqueté pour la conteneurisation.
Étape 2
Quel est l'« artefact » minimal à livrer, outre les poids entraînés ?
Solution :
La définition exacte du code/classe utilisée pour le prétraitement et la définition de l'architecture du modèle, sérialisées et couplées aux poids.